package kiv.gener;

/**
 * 
 * 
 * Serazuje pomoci heapsortu + spojuje 50 objektu s nejblizsima elektrarnama a
 * zatim jen vypisuje na obrazovku.
 * 
 * @author Ondřej Ptáček
 */

public class SpojElec {
	 /**
     * @param sloupec
     * 		Promenná představující elektrárnu.
     */
	public static int sloupec = 0; 
	  /**@param sloupec1
	    * 		Promenná představující elektrárnu.
	    */
    public static int sloupec1 = 0;  
    /**
     * Metoda SpojEl() ze seřazených vzdálenosti veme zadaný počet a přiřadí je
     * jako sousedy elektráren.
     * 
     */
    public static void SpojEl() {
        Krajina[] poleMist = new Krajina[Odberatele.poleMistKomplet.size()]; 
        int pet = 0; 
        do {
            poleMist[pet] = Odberatele.poleMistKomplet.get(pet);
            pet++; 
        } while (pet != Odberatele.poleMistKomplet.size());
        do {
            Odberatele.typRazeni = 1; // typ razeni
            Help.Serad(); // volani metody Serad ve tride Help
            if (sloupec == 0) // pokud je promena sloupec = 0
            {
                int sousedu = 150; // promena sousedu s hodnotou 150
                int soused = 0; // promena
                do {
                    boolean pravda = poleMist[soused + 11].jePripojeno; 

                    if (!pravda) // pokud ne
                    {
                        poleMist[0].Esousede[soused] = Razeni.HeapSort
                                .get(soused + 11).id; // dame na index 0
                                                      // poleMist[0].Esousede[0-150]
                                                      // =
                                                      // Razeni.Heapsort.get(0-150+11).atribut
                                                      // id;
                        poleMist[Razeni.HeapSort.get(soused + 11).id].cisloZdroje = 0; //
                        poleMist[soused + 11].jePripojeno = true; //
                        soused++; // inkrementace
                    }

                } while (soused != sousedu); // 0->150;
            } else {
                int sousedu = 50; // else promena sousedu = 50; prirazeni 50
                                  // sousedu ALTUM
                int soused = 0;
                int altSoused = 0;
                do {

                    boolean pravda1 = poleMist[altSoused + 11].jePripojeno;
                    if (!pravda1) {
                        poleMist[sloupec].Gsousede[soused] = Razeni.HeapSort
                                .get(altSoused + 11).id;
                        poleMist[Razeni.HeapSort.get(altSoused + 11).id].cisloZdroje = sloupec1 + 1;
                        poleMist[altSoused + 11].jePripojeno = true;
                        soused++;
                        altSoused++;
                    } else {
                        altSoused++;
                    }
                } while (soused != sousedu);
                sloupec1++;
            }

            sloupec++;
        } while (sloupec1 != Odberatele.pocetZdroju - 1);
        Odberatele.poleMistKomplet.clear();
        int opakovani = 0;
        do {
            Odberatele.poleMistKomplet.add(poleMist[opakovani]);
            opakovani++;
        } while (opakovani != poleMist.length);

        /**
         * vystup.println(Arrays.toString(poleMist[0].Esousede));
         * vystup.println(
         * Arrays.toString(Odberatele.poleMistKomplet.get(0).Esousede));
         * 
         * do {
         * 
         * if(Odberatele.poleMistKomplet.get(jedna).cisloZdroje==0){E[0]++;}
         * if(Odberatele.poleMistKomplet.get(jedna).cisloZdroje==1){E[1]++;}
         * if(Odberatele.poleMistKomplet.get(jedna).cisloZdroje==2){E[2]++;}
         * if(Odberatele.poleMistKomplet.get(jedna).cisloZdroje==3){E[3]++;}
         * if(Odberatele.poleMistKomplet.get(jedna).cisloZdroje==4){E[4]++;}
         * if(Odberatele.poleMistKomplet.get(jedna).cisloZdroje==5){E[5]++;}
         * if(Odberatele.poleMistKomplet.get(jedna).cisloZdroje==6){E[6]++;}
         * if(Odberatele.poleMistKomplet.get(jedna).cisloZdroje==7){E[7]++;}
         * if(Odberatele.poleMistKomplet.get(jedna).cisloZdroje==8){E[8]++;}
         * if(Odberatele.poleMistKomplet.get(jedna).cisloZdroje==9){E[9]++;}
         * if(Odberatele.poleMistKomplet.get(jedna).cisloZdroje==10){E[10]++;}
         * if(poleMist[jedna].cisloZdroje!=99){el++;} jedna++; }
         * while(jedna!=Odberatele.poleMistKomplet.size());
         * vystup.println(Arrays.toString(E)); vystup.println(el);
         */
    }
}
